//class Solution {
//public:
//    bool find(TreeNode*& root, TreeNode*& t)
//    {
//
//        if (root == nullptr)
//            return false;
//        return root == t || find(root->left, t) || find(root->right, t);
//    }
//    TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {
//        if (root == nullptr || root == p || root == q)
//            return root;
//        bool left = find(root->left, p);
//        bool right = find(root->right, q);
//        if (left && right)
//            return root;
//        if (left && !right)
//            return lowestCommonAncestor(root->left, p, q);
//        else if (!left && right)
//            return lowestCommonAncestor(root->right, p, q);
//        else
//            return root;
//    }
//};